Object-oriented programming languages and techniques allow application (or software) developers to manage complexity of application development by encapsulating related properties and functionalities in objects. Such programming languages and techniques can simplify application development, maintenance, and extension.
Typically, object-oriented constructs such as classes from which objects are generated are expressed in the syntax and grammar of high-level object-oriented programming languages, but not in binary (or machine) executable code that is interpreted by a processor. As such, binary (or executable) code generated when source code that defines an application (or software library) and is expressed in an object-oriented programming language is compiled does not include syntactic identification of objects. In other words, explicit identification of object-oriented constructs expressed in high-level object-oriented programming languages is lost during the compilation process.